Instrument Market Data
This guide assumes you already have followed the instructions on the offering page to obtain credentials
With this API you can retrieve market data for structured products issued by Vontobel: the latest prices and intraday and daily price history. Products are identified by their ISIN. Prices are returned in the quoting units of the product.
Requesting the latest price overview
Perform a GET request to:
GET https://spp-product-market-data.api.vontobel.com/v1/products/{isin}/prices/overview
The response looks like the following:
{
"lastPrice": {
"bid": 100.80,
"bidSize": 1000,
"ask": 101.00,
"askSize": 500,
"isQuotingPulled": false,
"observedAtTimestamp": "2024-01-15T10:05:00Z"
},
"lastClose": 100.50,
"lastCloseObservedAtTimestamp": "2024-01-12T21:00:00Z",
"lastCloseMethod": "Valuation",
... (other overview fields)
}
The lastPrice object has one observedAtTimestamp for the quote, while scalar overview prices have corresponding ...ObservedAtTimestamp fields. isQuotingPulled indicates that quoting for the product is currently inactive.
By default all fields are returned. To restrict the response, pass one or more fields parameters:
LastPrice, LastOpen, LastHigh, LastLow, LastClose, DailyPerformanceBasePrice, YTDPerformanceBasePrice, LastAccruedInterest
GET https://spp-product-market-data.api.vontobel.com/v1/products/{isin}/prices/overview?fields=LastPrice&fields=LastClose
Reference: see swagger reference
Requesting intraday prices
Perform a GET request to:
GET https://spp-product-market-data.api.vontobel.com/v1/products/{isin}/prices/intraday?interval=Minute_5&dateFrom=2024-01-15T08:00:00Z&dateTo=2024-01-15T22:00:00Z&fields=OHLC
| Parameter | Description | Default |
|---|---|---|
interval | Time between data points: Minute_5 or Hour_1 | Minute_5 |
dateFrom | Start date and time | earliest available price |
dateTo | End date and time | now (UTC) |
fields | Data to return: Close, OHLC (open, high, low, close) or BidAsk | Close |
The response looks like the following:
{
"prices": [
{
"windowOpenTimestamp": "2024-01-15T10:00:00Z",
"windowCloseTimestamp": "2024-01-15T10:05:00Z",
"open": 100.50,
"high": 101.20,
"low": 100.10,
"close": 100.80
}
]
}
Reference: see swagger reference
Requesting daily prices
Perform a GET request to:
GET https://spp-product-market-data.api.vontobel.com/v1/products/{isin}/prices/daily?dateFrom=2024-01-01&dateTo=2024-01-31
| Parameter | Description | Default |
|---|---|---|
dateFrom | Start date | earliest available price |
dateTo | End date | today (UTC) |
fields | Data to return: Close, CloseAccruedInterest, OHLC, LastBidAsk or LastBidAskAccruedInterest | Close |
orderByAscending | true to return the oldest date first | false (newest first) |
count | Maximum number of prices to return | all matching prices |
The response looks like the following:
{
"prices": [
{
"date": "2024-01-15",
"close": 100.80,
"closeMethod": "Valuation",
"accruedInterest": 0.25
}
]
}
closeMethod tells you how the close price was determined: Valuation, Close (official close) or Last (last observed price of the day).
There is no pagination. To get the latest prices only, combine count with the default descending order, e.g. ?count=1 returns the most recent daily price.
Reference: see swagger reference
Bulk requests
To retrieve data for several products in a single call, perform a POST request with up to 20 items:
POST https://spp-product-market-data.api.vontobel.com/v1/products/bulk
{
"items": [
{ "$type": "ProductPriceOverviewRequest", "isin": "CH1234567890", "fields": ["LastPrice"] },
{ "$type": "ProductDailyPriceRequest", "isin": "CH1234567890", "count": 5 },
{ "$type": "ProductIntradayPriceRequest", "isin": "CH0987654321", "interval": "Hour_1" }
]
}
Each item is polymorphic, based on the $type field: ProductPriceOverviewRequest, ProductIntradayPriceRequest
or ProductDailyPriceRequest. Each type takes the same parameters as the corresponding GET endpoint.
The items in the response are returned in the order they were submitted. Each item either has a response or, if that
individual request failed, an errorResponse. The top level errors flag is true when at least one item failed.
{
"errors": true,
"items": [
{
"responseIdentifier": { "isin": "CH1234567890" },
"response": { "$type": "ProductPriceOverviewResponse", "lastPrice": { ... } },
"errorResponse": null
},
...
{
"responseIdentifier": { "isin": "CH0987654321" },
"response": null,
"errorResponse": { "status": 400, "title": "...", "detail": "..." }
}
]
}
Reference: see swagger reference